<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    /*
    * 高阶函数：函数作为参数、函数作为返回值
    * */
    function fun(callback) {
        if (typeof callback !== "function") return
        callback()
    }

    // 函数可以作为参数此时fun函数是一个高阶函数
    fun(() => {
        console.log("函数执行了")
    })

    function sum(...args) {
        // 函数可以作为返回值此时sum函数是一个高阶函数
        return () => {
            return args.reduce((sum, item) => sum + item, 0)
        }
    }

    const res = sum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    console.log(res())
</script>
</body>
</html>